import java.util.Deque;
import java.util.LinkedList;

public class num101 {
    public boolean isSymmetric(TreeNode root) {
        if(root == null){
            return true;
        }
        return isMirror(root.left,root.right);
    }
    public boolean isMirror(TreeNode t1,TreeNode t2){
        if(t1 == null && t2 == null){
            return true;
        }
        if(t1 == null || t2 == null){
            return false;
        }
        return t1.val == t2.val && isMirror(t1.left,t2.right) && isMirror(t1.right,t2.left);
    }
//    public boolean isSymmetric(TreeNode root) {
//        Deque<TreeNode> queue = new LinkedList<>();
//        if(root == null){
//            return true;
//        }
//        queue.offer(root.left);
//        queue.offer(root.right);
//        while (!queue.isEmpty()){
//            TreeNode t1 = queue.poll();
//            TreeNode t2 = queue.poll();
//            if(t1 == null && t2 == null){
//                continue;
//            }
//            if(t1 == null || t2 == null){
//                return false;
//            }
//            if(t1.val != t2.val){
//                return false;
//            }
//            queue.offer(t1.left);
//            queue.offer(t2.right);
//            queue.offer(t1.right);
//            queue.offer(t2.left);
//        }
//        return true;
//    }
}
